package com.kk.xhr.admin.biz;

import com.kk.xhr.admin.controller.request.SalaryAddRequest;
import com.kk.xhr.admin.controller.request.SalaryModifyRequest;
import com.kk.xhr.admin.controller.request.SalaryQueryRequest;
import com.kk.xhr.admin.controller.vo.SalaryVO;
import com.kk.xhr.common.pojo.BinaryEnum;
import com.kk.xhr.web.vo.PageVO;

import java.util.List;

/**
 * 薪资biz服务接口
 *
 * @author kkmystery
 * @version 1.0 2021/3/7
 * @since 1.0.0
 */
public interface ISalaryBizService {

    /**
     * 分页查询
     *
     * @param request 薪资查询request
     * @return SalaryVO
     */
    PageVO<SalaryVO> queryPage(SalaryQueryRequest request);

    /**
     * 查询我的薪资
     *
     * @param userId 用户id
     * @return SalaryVO
     */
    SalaryVO queryMine(Long userId);

    /**
     * 查询我的历史薪资
     *
     * @param userId 用户id
     * @return 列表
     */
    List<SalaryVO> queryLog(Long userId);

    /**
     * 查询某个用户薪资
     *
     * @param userId 用户id
     * @return SalaryVO
     */
    SalaryVO query(Long userId);

    /**
     * 添加薪资
     *
     * @param request SalaryAddRequest
     * @return 是否成功
     */
    boolean add(SalaryAddRequest request);

    /**
     * 修改薪资
     *
     * @param id      主键id
     * @param request SalaryModifyRequest
     * @return 是否成功
     */
    boolean modify(Long id, SalaryModifyRequest request);

    /**
     * 修改薪资状态
     *
     * @param id     主键id
     * @param status 状态
     * @return 是否成功
     */
    boolean modifyStatus(Long id, BinaryEnum status);

    /**
     * 结算每个人的薪资
     */
    void calculateSalary();
}
